package com.gzbugu.bugusys.dao;

import java.util.List;
import java.util.Map;

import com.gzbugu.bugusys.bean.PageModel;


public interface IHQLQuery {

	/**
	 * 查询
	 * 
	 * @param hql
	 *            hql语句
	 * @param page
	 *            分页模型
	 * @return 查询结果
	 */
	@SuppressWarnings("unchecked")
	public abstract List find(String hql, PageModel page);

	/**
	 * 查询
	 * 
	 * @param hql
	 *            hql语句
	 * @param offset
	 *            开始位置
	 * @param pagesize
	 *            查询记录总数
	 * @return 查询结果
	 */
	@SuppressWarnings("unchecked")
	public abstract List find(String hql, int offset, int pagesize);

	/**
	 * 查询
	 * 
	 * @param hql
	 *            查询hql语句
	 * @return 查询结果
	 */
	@SuppressWarnings("unchecked")
	public abstract List find(String hql);

	/**
	 * 查询,推荐使用此方法，可防止hql注入攻击
	 * 
	 * @param prepartHql
	 *            带有参数的hql语句
	 * @param paramsMap
	 *            保存有参数名和值的map
	 * @return 查询结果
	 */
	@SuppressWarnings("unchecked")
	public abstract List find(String prepartHql, Map<String, Object> paramsMap);

	/**
	 * 查询,推荐使用此方法，可防止hql注入攻击
	 * 
	 * @param prepartHql
	 *            带有参数的hql语句
	 * @param paramsMap
	 *            保存有参数名和值的map
	 * @param offset
	 *            开始位置
	 * @param pagesize
	 *            查询记录数
	 * @return 查询结果
	 */
	@SuppressWarnings("unchecked")
	public abstract List find(String prepartHql, Map<String, Object> paramsMap,
			int offset, int pagesize);

	/**
	 * 查询,推荐使用此方法，可防止hql注入攻击
	 * 
	 * @param prepartHql
	 *            带有参数的hql语句
	 * @param paramsMap
	 *            保存有参数名和值的map
	 * @param page
	 *            分页模型
	 * @return 查询结果
	 */
	@SuppressWarnings("unchecked")
	public abstract List find(String prepartHql, Map<String, Object> paramsMap,
			PageModel page);
}